package com.demo.core;

import sun.misc.Signal;
import sun.misc.SignalHandler;

import static java.lang.Thread.sleep;

public class KillHandler implements SignalHandler {

    public void registerSignal(String signalName) {
        Signal signal = new Signal(signalName);
        Signal.handle(signal, this);

        SysConfig.out("register signal : " + signalName + " success!");
    }

    /**
     * HUP     1    终端断线
     * INT       2    中断（同 Ctrl + C）
     * QUIT    3    退出（同 Ctrl + \）
     * TERM    15    终止
     * KILL      9    强制终止
     * CONT   18    继续（与STOP相反， fg/bg命令）
     * STOP    19    暂停（同 Ctrl + Z）
     *
     * @param signal
     */
    @Override
    public void handle(Signal signal) {
        boolean flag = false;
        if (signal.getName().equals("TERM")) {
            while (!flag) {
                flag = true;
                SysConfig.out("start check jobs......");
//                flag = flag && !DayAccountTradeTask.isrunning();
                if (!flag) {
                    try {
                        sleep(10 * 1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
            System.exit(0);
        } else if (signal.getName().equals("INT") || signal.getName().equals("HUP")) {
            //
        } else {
            //
        }
    }
}
